package com.zhouz.admin.app.gennercode; /*
 * Copyright (C), 2017-2019 广东快洁帮家政服务有限公司
 * FileName: GennerCodeService.java
 * Author:   张鹏
 * Date:     2019/5/9 20:27
 * History:
 * <author>          <time>          <version>          <desc>
 * 张鹏             2019/5/920:27     V1.00             新建
 * -----------------------------------------------------------
 * 作者姓名           修改时间           版本号            描述
 */

import cn.hutool.core.date.DateUtil;
import com.zhouz.admin.app.gennercode.inter.GenerateAbstract;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Map;

@Service
@Log4j2
public class GennerCodeService {
    @Autowired
    private Map<GennerCodeTypeEnum, GenerateAbstract> gennerCodeInterMap;
    /**
     * 加前缀 如 SS_1 SS_2
     * @param type
     * @return
     */
    public String getCode(GennerCodeTypeEnum type){
        return type.pre() + gennerCodeInterMap.get(type).sequence().nextValue();
    }
    /**
     * 加前缀 如 SS_00000001 SS_00000002
     * @param type
     * @return
     */
    public String getCode10(GennerCodeTypeEnum type){
        return type + String.format("%010d",gennerCodeInterMap.get(type).sequence().nextValue());
    }
    /**
     * 加前缀 如 SS_00000001 SS_00000002
     * @param type
     * @return
     */
    public String getCode6(GennerCodeTypeEnum type){
        long val = gennerCodeInterMap.get(type).sequence().nextValue();
        //String s = String.format("%06d",val%1000000);
        // 去 首位为0

        return val + "";
    }
    /**
     * 仅获取 编码 1，2，3，4
     * @auther: zhangpeng
     * @date: 2019/5/14 14:25
     * @param type
     * @return
     */
    public String getOnlyCode(GennerCodeTypeEnum type){
        return gennerCodeInterMap.get(type).sequence().nextValue()+"";
    }

    /**
     *  S_20190513115200001502
     * @param type
     * @return
     */
    public String getYYMMCode(GennerCodeTypeEnum type){
        long val = gennerCodeInterMap.get(type).sequence().nextValue();
        String str = String.format("%06d", val%1000000);
        String pre =  type + "_" + DateUtil.format(new Date(), "yyyyMMddHH");
        return pre + str;
    }
}
